Security News
Node.js EOL Versions CVE Dubbed the "Worst CVE of the Year" by Security Experts
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
The 'lerc' npm package is used for encoding and decoding LERC (Limited Error Raster Compression) files. LERC is a format developed by Esri for compressing raster data with controlled loss, making it suitable for geospatial applications where precision is important.
Decode LERC data
This feature allows you to decode LERC data from a file. The decoded data can then be used for further processing or analysis.
const lerc = require('lerc');
const fs = require('fs');
// Read LERC file
const lercData = fs.readFileSync('path/to/lerc/file.lerc');
// Decode LERC data
const decodedData = lerc.decode(lercData);
console.log(decodedData);
Encode data to LERC format
This feature allows you to encode raster data into the LERC format. The encoded data can then be saved to a file for storage or transmission.
const lerc = require('lerc');
const fs = require('fs');
// Example data to encode
const data = {
width: 256,
height: 256,
pixels: new Float32Array(256 * 256)
};
// Encode data to LERC format
const encodedData = lerc.encode(data);
// Write encoded data to file
fs.writeFileSync('path/to/output/file.lerc', encodedData);
The 'geotiff' package is used for reading and writing GeoTIFF files, which are a common format for geospatial raster data. Unlike LERC, GeoTIFF does not focus on compression but rather on storing georeferenced raster data. It is more versatile in terms of metadata and geospatial information but may result in larger file sizes.
The 'pngjs' package is used for encoding and decoding PNG images. While PNG is a lossless compression format, it is not specifically designed for geospatial data. It is more general-purpose and widely supported but may not offer the same level of control over compression errors as LERC.
The 'jpeg-js' package is used for encoding and decoding JPEG images. JPEG is a lossy compression format that is widely used for photographic images. It is not suitable for applications requiring precise control over compression errors, making it less ideal for geospatial data compared to LERC.
Rapid decoding of Lerc compressed raster data for any standard pixel type, not just rgb or byte.
Lerc.load()
must be invoked and the returned promise must be resolved prior to Lerc.decode
. This only needs to be done once per worker (or the main thread). There's no extra cost when invoked multiple times as the internal wasm loading promise is cached.npm install lerc
// es module
import * as Lerc from 'lerc';
// commonJS
const Lerc = require('lerc');
// use umd via a script tag
<script type="text/javascript" src="https://unpkg.com/lerc@latest/LercDecode.min.js"></script>
await Lerc.load();
const arrayBuffer = await fetch('http://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer/tile/0/0/0')
.then(response => response.arrayBuffer());
const pixelBlock = Lerc.decode(arrayBuffer);
const { height, width, pixels, mask } = pixelBlock;
for (let i = 0; i < height; i++) {
for (let j = 0; j < width; j++) {
if (!mask || mask[i * width + j]) {
// do something with valid pixel (i,j)
}
}
}
// use options
const pixelBlock = Lerc.decode(arrayBuffer, {
inputOffset: 10, // start from the 10th byte (default is 0)
returnInterleaved: true // only applicable to n-depth lerc blobs (default is false)
});
A module for decoding LERC blobs.
Promise
⏏Load the dependencies (web assembly). Check whether dependencies has been loaded using Lerc.isLoaded()
. The loading promise is cached so it can be invoked multiple times if needed.
Kind: Exported function
Param | Type | Description |
---|---|---|
[options.locateFile] | (wasmFileName?: string, scriptDir?: string) => string | The function to locate lerc-wasm.wasm. Used when the web assembly file is moved to a different location. |
Object
⏏A function for decoding both LERC1 and LERC2 byte streams capable of handling multiband pixel blocks for various pixel types.
Kind: Exported function
Param | Type | Description |
---|---|---|
input | ArrayBuffer | The LERC input byte stream |
[options] | object | The decoding options below are optional. |
[options.inputOffset] | number | The number of bytes to skip in the input byte stream. A valid Lerc file is expected at that position. |
[options.noDataValue] | number | It is recommended to use the returned mask instead of setting this value. |
(Deprecated) [options.returnPixelInterleavedDims] | boolean | will be removed in next release, use returnInterleaved instead. |
[options.returnInterleaved] | boolean | (ndepth LERC2 only) If true, returned depth values are pixel-interleaved. |
Result Object Properties
Name | Type | Description |
---|---|---|
width | number | Width of decoded image. |
height | number | Height of decoded image. |
pixels | array | [band1, band2, …] Each band is a typed array of width * height * depthCount. |
pixelType | string | The type of pixels represented in the output. |
mask | mask | Typed array with a size of width*height, or null if all pixels are valid. |
statistics | array | [statistics_band1, statistics_band2, …] Each element is a statistics object representing min and max values |
(Deprecated) dimCount | number | Will be removed in next release, use depthCount instead. |
depthCount | number | Depth count |
[bandMasks] | array | [band1_mask, band2_mask, …] Each band is a Uint8Array of width * height * depthCount. |
Copyright © 2017-2023 Esri
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
A local copy of the license and additional notices are located with the source distribution at:
FAQs
Rapid decoding of Lerc compressed raster data for any standard pixel type.
We found that lerc demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.
Security News
Bun 1.2 enhances its JavaScript runtime with 90% Node.js compatibility, built-in S3 and Postgres support, HTML Imports, and faster, cloud-first performance.